home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Transfer Header
- */
-
- #include <sys/types.h>
- #include <libraries/dos.h>
-
- #include <time.h>
- #include <netinet/in.h>
-
- #include "include/napster.h"
- #include "include/thread.h"
- #include "include/download.h"
-
- #ifndef AMSTER_TRANSFER_H
- #define AMSTER_TRANSFER_H
-
- struct TransferData {
- struct MUI_InputHandlerNode ihnode;
- struct MUI_InputHandlerNode waitnode;
- struct MUI_InputHandlerNode watchnode;
- u_long *list;
- u_long *info;
- };
-
- /* Download states
- - IMPORTANT: These states MUST be in the same order as the
- catalog string array in transfer.c
- */
- enum TransferState {
- DLS_PREP,
- DLS_QUEUE,
- DLS_WAIT,
- DLS_CON,
- DLS_REQ,
- DLS_INIT,
- DLS_DOWN,
- DLS_UP,
- DLS_FIN,
- DLS_ABORT,
- DLS_ERROR
- };
-
- /* Transfer errors
- - IMPORTANT: These errors MUST be in the same order as the
- catalog string array in transfer.c
- */
- enum TransferError {
- ERROR_UNKNOWN,
- ERROR_FILEOPEN,
- ERROR_FILEREAD,
- ERROR_FILEWRITE,
- ERROR_NET,
- ERROR_LOGGEDOUT,
- ERROR_NOTFOUND,
- ERROR_INVALIDREQUEST,
- ERROR_TEASER,
- ERROR_BUSY,
- ERROR_NOTREQUESTED,
- ERROR_TIMEOUT,
- ERROR_OUTOFBOUND
- };
-
- enum NetError {
- ERROR_NET_TIMEOUT,
- ERROR_NET_REFUSED,
- ERROR_NET_RESET,
- ERROR_NET_PIPE
- };
-
- enum TransferType {
- TYPE_DOWNLOAD_IN,
- TYPE_DOWNLOAD_OUT,
- TYPE_UPLOAD_IN,
- TYPE_UPLOAD_OUT
- };
-
- typedef struct songtrans_struct {
- struct songtrans_struct *next;
- song song;
- char *mynick;
- u_long ip;
- char host[512];
- int port;
- char *fname;
- u_long size, cur, resumestart;
- enum TransferType type;
- enum TransferState state;
- enum TransferError error;
- int ErrorCode;
- int RetryCount;
- thread t;
- int ts;
- int cps, stalltick;
- u_long oldsize;
- time_t reqtime; /* Time when the request is made */
- time_t starttime, transtime, timeleft;
-
- /* thread data */
- struct Library *DosBase;
- struct Library *SocketBase;
- long s;
- char *buffer;
- BPTR f;
- u_long nsig, nsigm, msigm;
- struct sockaddr_in sin;
- struct fd_set fds;
- struct timeval tv;
- } *songtrans, _songtrans;
-
-
- extern ULONG dl_setup(struct IClass *cl, Object *obj, Msg msg);
- extern ULONG dl_muicleanup(struct IClass *cl, Object *obj, Msg msg);
- extern MUIF translistdisp(REG(a2) char **array, REG(a1) songtrans sd);
- extern MUIF translistdest(REG(a2) APTR pool, REG(a1) songtrans sd);
- extern void CalculateCps(songtrans sd);
- extern void TransferSetError(struct TransferData *data, char *title, char *user, int error);
- extern void TransferInfo(struct TransferData *data);
- extern void TransferAbort(struct TransferData *data);
- extern void TransferCleanup(struct TransferData *data);
- extern void TransferWatcher(struct TransferData *data);
- extern void TransferHandleError(songtrans sd);
- extern BOOL InitTransferThread(thread t, songtrans sd);
- extern void ExitTransferThread(songtrans sd, int ret);
-
-
- #endif /* AMSTER_TRANSFER_H */
-